#include <iostream>
#include <cstdlib>
#include <string>
#include <iomanip>
#include <sstream>
#include <math.h> 

using namespace std;

int const n=3;							//trafico que atraviesa un semaforo en un turno.

#include "HeapMinVehiculos.cpp"  //Tiene dentro #include "Vehiculo.cpp"
#include "HeapMaxSemaforos.cpp"  //Tiene dentro #include "Semaforo.cpp"
#include "GrafoCiudad.cpp"


int main(void){
	
	HeapMax *heapSemaforos=new HeapMax();

//	GrafoCiudad *grafo=new GrafoCiudad();

	Vehiculo *v1=new Vehiculo();
	Vehiculo *v2=new Vehiculo();
	Vehiculo *v3=new Vehiculo();
	Vehiculo *v4=new Vehiculo();
	Vehiculo *v5=new Vehiculo();
	Vehiculo *v6=new Vehiculo();
	Vehiculo *v7=new Vehiculo();
	Vehiculo *v8=new Vehiculo();
	Vehiculo *v9=new Vehiculo();
	Vehiculo *v10=new Vehiculo();
	Vehiculo *v11=new Vehiculo();
	Vehiculo *v12=new Vehiculo();
	Vehiculo *v13=new Vehiculo();
	Vehiculo *v14=new Vehiculo();
	Vehiculo *v15=new Vehiculo();
	Vehiculo *v16=new Vehiculo();
	Vehiculo *v17=new Vehiculo();
	Vehiculo *v18=new Vehiculo();
	Vehiculo *v19=new Vehiculo();
	Vehiculo *v20=new Vehiculo();
	Vehiculo *v21=new Vehiculo();
	Vehiculo *v22=new Vehiculo();
	Vehiculo *v23=new Vehiculo();
	Vehiculo *v24=new Vehiculo();
	Vehiculo *v25=new Vehiculo();
	Vehiculo *v26=new Vehiculo();
	Vehiculo *v27=new Vehiculo();
	Vehiculo *v28=new Vehiculo();
	Vehiculo *v29=new Vehiculo();
	Vehiculo *v30=new Vehiculo();
	Vehiculo *v31=new Vehiculo();
	Vehiculo *v32=new Vehiculo();
	Vehiculo *v33=new Vehiculo();
	Vehiculo *v34=new Vehiculo();
	Vehiculo *v35=new Vehiculo();
	Vehiculo *v36=new Vehiculo();
	Vehiculo *v37=new Vehiculo();
	Vehiculo *v38=new Vehiculo();
	Vehiculo *v39=new Vehiculo();
	Vehiculo *v40=new Vehiculo();
	Vehiculo *v41=new Vehiculo();
	Vehiculo *v42=new Vehiculo();
	Vehiculo *v43=new Vehiculo();
	Vehiculo *v44=new Vehiculo();
	Vehiculo *v45=new Vehiculo();
	Vehiculo *v46=new Vehiculo();
	Vehiculo *v47=new Vehiculo();
	Vehiculo *v48=new Vehiculo();
	Vehiculo *v49=new Vehiculo();
	Vehiculo *v50=new Vehiculo();
	
	Semaforo *s1=new Semaforo(1,1);
	Semaforo *s2=new Semaforo(2,2);
	Semaforo *s3=new Semaforo(3,3);
	Semaforo *s4=new Semaforo(2,4);
	Semaforo *s5=new Semaforo(3,5);
	Semaforo *s6=new Semaforo(1,6);
	Semaforo *s7=new Semaforo(1,10);
	Semaforo *s8=new Semaforo(2,11);
	Semaforo *s9=new Semaforo(4,7);
	Semaforo *s10=new Semaforo(2,8);
	Semaforo *s11=new Semaforo(2,28);
	Semaforo *s12=new Semaforo(2,14);
	
	s1->rojo(v1);
	s1->rojo(v2);
	s1->rojo(v3);
	s1->rojo(v4);
	s1->rojo(v5);
	s1->rojo(v6);
	s1->rojo(v7);
	s1->rojo(v8);
	
	s2->rojo(v10);
	s2->rojo(v11);
	s2->rojo(v12);
	s2->rojo(v13);
	s2->rojo(v14);
	s2->rojo(v15);
	s2->rojo(v16);
	s2->rojo(v17);
	
	s3->rojo(v18);
	s3->rojo(v19);
	s3->rojo(v20);
	s3->rojo(v21);
	s3->rojo(v22);
	s3->rojo(v23);
	s3->rojo(v24);
	
	s4->rojo(v25);
	s4->rojo(v26);
	s4->rojo(v27);
	s4->rojo(v28);

	s5->rojo(v29);
	s5->rojo(v30);

	heapSemaforos->insertar(s1);
	heapSemaforos->insertar(s2);
	heapSemaforos->insertar(s3);
	heapSemaforos->insertar(s4);
	heapSemaforos->insertar(s5);
	heapSemaforos->insertar(s6);
	heapSemaforos->insertar(s7);
	heapSemaforos->insertar(s8);
	heapSemaforos->insertar(s9);
	heapSemaforos->insertar(s10);
	heapSemaforos->insertar(s11);
	heapSemaforos->insertar(s12);
	
	heapSemaforos->print_heap();
	cout<<endl<<"-----------------------------------------"<<endl;
	
	
	
	
	return 0;
}
